int cvi_board_init(void)
{
	PINMUX_CONFIG(CAM_MCLK0, CAM_MCLK0, G9);
	PINMUX_CONFIG(CAM_MCLK1, CAM_MCLK1, G9);
 	PINMUX_CONFIG(CAM_MCLK2, CAM_MCLK2, G9);
	PINMUX_CONFIG(CAM_MCLK3, CAM_MCLK3, G9);
	PINMUX_CONFIG(CAM_MCLK4, CAM_MCLK4, G9);
	PINMUX_CONFIG(CAM_MCLK5, CAM_MCLK5, G9);
	PINMUX_CONFIG(IIC0_SCL, IIC0_SCL, G12);
	PINMUX_CONFIG(IIC0_SDA, IIC0_SDA, G12);
	PINMUX_CONFIG(IIC1_SCL, IIC1_SCL, G12);
	PINMUX_CONFIG(IIC1_SDA, IIC1_SDA, G12);
	PINMUX_CONFIG(IIC2_SCL, IIC2_SCL, G12);
	PINMUX_CONFIG(IIC2_SDA, IIC2_SDA, G12);
	//FOR WS BD 
	PINMUX_CONFIG(IIC4_SCL, SPI3_SDI, G12);
	PINMUX_CONFIG(IIC4_SDA, SPI3_CS_X, G12);
	PINMUX_CONFIG(IIC5_SCL, SPI3_SCK, G12);
	PINMUX_CONFIG(IIC5_SDA, SPI3_SDO, G12);
		
	PINMUX_CONFIG(UART2_RX, IIC6_SCL, G12);
	PINMUX_CONFIG(UART2_TX, IIC6_SDA, G12);
	PINMUX_CONFIG(CAM_XLR0, GPIO69, G9);
	PINMUX_CONFIG(CAM_XLR1, GPIO70, G9);
	PINMUX_CONFIG(GPIO4, GPIO115, G12);
	PINMUX_CONFIG(GPIO5, GPIO116, G12);
	PINMUX_CONFIG(UART4_RTS, GPIO93, G12);
	PINMUX_CONFIG(UART4_CTS, GPIO94, G12);
	PINMUX_CONFIG(UART4_RX, UART4_RX, G12);
	PINMUX_CONFIG(UART4_TX, UART4_TX, G12);

	PINMUX_CONFIG(UART1_CTS, GPIO86, G11);
	mmio_write_32(0x27012004, mmio_read_32(0x27012004) | 0x400000);
	mmio_write_32(0x27012000, mmio_read_32(0x27012000) | 0x400000);	
	PINMUX_CONFIG(UART1_RTS, GPIO85, G11);
	mmio_write_32(0x27012004, mmio_read_32(0x27012004) | 0x200000);
	mmio_write_32(0x27012000, mmio_read_32(0x27012000) | 0x200000);	
	//mipi dsi
	//PINMUX_CONFIG(PAD_MIPI0_TX0P, PAD_MIPI0_TX0P, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX0N, PAD_MIPI0_TX0N, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX1P, PAD_MIPI0_TX1P, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX1N, PAD_MIPI0_TX1N, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX2P, PAD_MIPI0_TX2P, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX2N, PAD_MIPI0_TX2N, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX3P, PAD_MIPI0_TX3P, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX3N, PAD_MIPI0_TX3N, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX4P, PAD_MIPI0_TX4P, PHY);
	//PINMUX_CONFIG(PAD_MIPI0_TX4N, PAD_MIPI0_TX4N, PHY);

	//PINMUX_CONFIG(PAD_MIPI1_TX0P, PAD_MIPI1_TX0P, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX0N, PAD_MIPI1_TX0N, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX1P, PAD_MIPI1_TX1P, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX1N, PAD_MIPI1_TX1N, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX2P, PAD_MIPI1_TX2P, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX2N, PAD_MIPI1_TX2N, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX3P, PAD_MIPI1_TX3P, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX3N, PAD_MIPI1_TX3N, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX4P, PAD_MIPI1_TX4P, PHY);
	//PINMUX_CONFIG(PAD_MIPI1_TX4N, PAD_MIPI1_TX4N, PHY);

	PINMUX_CONFIG(PWR_UART_TX, PWR_UART_TX, G7);
	PINMUX_CONFIG(PWR_UART_RX, PWR_UART_RX, G7);
	//PINMUX_CONFIG(UART1_TX, UART1_TX, G11);
	//PINMUX_CONFIG(UART1_RX, UART1_RX, G11);
	PINMUX_CONFIG(GPIO1, GPIO112, G12);
	PINMUX_CONFIG(GPIO0, GPIO111, G12);
	PINMUX_CONFIG(GPIO3, GPIO114, G12);

	//LED GPIO
	PINMUX_CONFIG(PWR_GPIO1, PWR_GPIO1, G7);
	
	//VCC12V-DCIN VCC_SYS_5V VCC_SYS_3V3
	PINMUX_CONFIG(PWR_SEQ1, PWR_GPIO11, G7);//VCC12V-DCIN
	PINMUX_CONFIG(GPIO1, GPIO112, G12);//VCC_SYS_5V
	PINMUX_CONFIG(IIC2_SDA, GPIO99, G12);//VCC_SYS_3V3
	
	//USB HOST
	PINMUX_CONFIG(CAM_MCLK5, GPIO51, G9);//VCC HUB
	PINMUX_CONFIG(PWR_GPIO5, PWR_GPIO5, G7);//VCC USB CON 

	//I2C5
	PINMUX_CONFIG(SD1_D0, IIC5_SDA, G11);	
	PINMUX_CONFIG(SD1_D1, IIC5_SCL, G11);	
	//I2C6
	PINMUX_CONFIG(SD1_D2, IIC6_SDA, G11);	
	PINMUX_CONFIG(SD1_D3, IIC6_SCL, G11);
	
	//PCEI-NVME POWER EN
	PINMUX_CONFIG(CAM_MCLK4, GPIO50, G9);

	//UART1,UART2,UART4,UART5,UART6
	PINMUX_CONFIG(PAD_MIPI1_TX0P, UART1_TX, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX0N, UART1_RX, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX1P, UART1_RTS, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX1N, UART1_CTS, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX2P, UART2_TX, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX2N, UART2_RX, PHY);
	//绿色旧板使用这组UART4
	PINMUX_CONFIG(FAN0, GPIO79, G9);
	PINMUX_CONFIG(FAN1, GPIO80, G9);
	//PINMUX_CONFIG(FAN0, UART4_TX, G9);
	//PINMUX_CONFIG(FAN1, UART4_RX, G9);
	PINMUX_CONFIG(PWM0, UART5_TX, G9);
	PINMUX_CONFIG(PWM1, UART5_RX, G9);
	PINMUX_CONFIG(PWM2, UART6_TX, G9);
	PINMUX_CONFIG(PWM3, UART6_RX, G9);
	PINMUX_CONFIG(SD1_CD_X, GPIO61, G12);	
	//PINMUX_CONFIG(SD0_PWR_EN, GPIO60, G9);
	mmio_write_32(0x6700b0c0, 0x3fffffff);
	mmio_write_32(0x6700b160, 0x0);
	
	//MCU I2C GPIO
	PINMUX_CONFIG(PAD_VIVO0_D13, GPIO131, G5);
	PINMUX_CONFIG(PAD_VIVO0_D14, GPIO132, G5);
	
	//VCC FOR 4G
	PINMUX_CONFIG(PWR_GPIO4, PWR_GPIO4, G7);
	
	//For GPIO
	PINMUX_CONFIG(SD1_PWR_EN, GPIO68, G12);
	PINMUX_CONFIG(PAD_MIPI1_TX3P, GPIO124, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX3N, GPIO125, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX4P, IIC3_SDA, PHY);
	PINMUX_CONFIG(PAD_MIPI1_TX4N, IIC3_SCL, PHY);
		
	PINMUX_CONFIG(PAD_MIPI0_TX0P, GPIO174, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX0N, GPIO175, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX1P, GPIO176, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX1N, GPIO177, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX2P, GPIO178, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX2N, GPIO179, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX3P, GPIO180, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX3N, GPIO181, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX4P, GPIO182, PHY);
	PINMUX_CONFIG(PAD_MIPI0_TX4N, GPIO183, PHY);	
	
	//SHUTDOWN IO
	PINMUX_CONFIG(PWR_GPIO0, PWR_GPIO0, G7);	

	//CAM I2C
	PINMUX_CONFIG(PAD_VIVO0_D15, IIC7_SDA, G5);
	PINMUX_CONFIG(PAD_VIVO0_D16, IIC7_SCL, G5);

	//FAN PWM
	PINMUX_CONFIG(GPIO3, PWM11, G12);
	
	//RECOVERY KEY
	PINMUX_CONFIG(PWR_SEQ2, PWR_GPIO12, G7);
	
	//GPIO
	PINMUX_CONFIG(I2S0_SCLK, GPIO0, G6);
	PINMUX_CONFIG(I2S0_WSI, GPIO1, G6);
	PINMUX_CONFIG(I2S0_SDI0, GPIO2, G6);
	PINMUX_CONFIG(I2S0_SDI1, GPIO3, G6);	
	PINMUX_CONFIG(I2S0_SDO, GPIO4, G6);
	PINMUX_CONFIG(I2S0_MCLK, GPIO5, G6);
	PINMUX_CONFIG(PWR_GPIO2, PWR_GPIO2, G7);
	PINMUX_CONFIG(PWR_GPIO3, PWR_GPIO3, G7);
	//PCIE RST	
	PINMUX_CONFIG(PAD_VIVO0_D11, GPIO129, G5);
	PINMUX_CONFIG(PAD_VIVO0_D12, GPIO130, G5);
	
	//BD UART3
	PINMUX_CONFIG(IIC2_SDA, UART3_TX, G12);
	PINMUX_CONFIG(IIC2_SCL, UART3_RX, G12);
	
	//GPIO
	PINMUX_CONFIG(UART1_TX, GPIO83, G11);
	PINMUX_CONFIG(UART1_RX, GPIO84, G11);
	return 0;
}
